Take a different approach with metabolites:
Here include genotype for the treatment models but use scaled and centered values for leaf associations.
NOTE: THIS IS THE FINAL ANALYSIS. TRIED AND DID NOT LIKE LME MODELS. TOO MANY SINGULARITIES. I THINK THERE IS NOT ENOUGH DATA TO ESTIMATE BLOCK EFFECCTS WELL.
NOTE: NEXT STEPS: TRY MAKING TERNARY PLOT WITH SIMPLE MEANS.
library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
method from
print.tbl_lazy
print.tbl_sql
── Attaching packages ──────────────────────────────────────────────── tidyverse 1.3.1 ──
✓ ggplot2 3.3.5 ✓ purrr 0.3.4
✓ tibble 3.1.6 ✓ dplyr 1.0.8
✓ tidyr 1.2.0 ✓ stringr 1.4.0
✓ readr 2.1.2 ✓ forcats 0.5.1
── Conflicts ─────────────────────────────────────────────────── tidyverse_conflicts() ──
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
library(broom)
get leaflength data
leaflength <- read_csv("../../plant/output/leaf_lengths_metabolite.csv") %>%
mutate(pot=str_pad(pot, width=3, pad="0"),
sampleID=str_c("wyo", genotype, pot, sep="_")) %>%
select(sampleID, genotype, trt, leaf_avg_std)
Rows: 36 Columns: 6
── Column specification ─────────────────────────────────────────────────────────────────
Delimiter: ","
chr (3): soil, genotype, trt
dbl (3): pot, leaf_avg, leaf_avg_std
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
leaflength %>% arrange(sampleID)
get and wrangle metabolite data
met_raw <-read_csv("../input/metabolites_set1.csv")
Rows: 72 Columns: 671
── Column specification ─────────────────────────────────────────────────────────────────
Delimiter: ","
chr (6): tissue, soil, genotype, autoclave, time_point, concatenate
dbl (665): submission_number, pot, sample_mass mg, xylulose NIST, xylose, xylonic aci...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
met <- met_raw %>%
mutate(pot=str_pad(pot, width = 3, pad = "0")) %>%
mutate(sampleID=str_c("wyo", genotype, pot, sep="_")) %>%
mutate(trt=ifelse(is.na(autoclave), "BLANK", autoclave)) %>%
select(sampleID, genotype, tissue, trt, sample_mass = `sample_mass mg`, !submission_number:concatenate) %>%
#bring in leaf length
left_join({leaflength %>% select(sampleID, leaf_avg_std)}) %>%
select(sampleID, genotype, tissue, trt, leaf_avg_std, everything()) %>%
#make long
pivot_longer(!sampleID:sample_mass, names_to = "metabolite", values_to = "met_amt") %>%
#filter away unnamed
filter(str_detect(metabolite, pattern="^[0-9]+$", negate=TRUE)) %>%
#adjust by sample mass
mutate(met_per_mg=met_amt/sample_mass) %>%
pivot_wider(id_cols = c(sampleID, genotype, trt, leaf_avg_std),
names_from = c(tissue, metabolite),
values_from = starts_with("met_"),
names_sep = "_")
Joining, by = "sampleID"
met
split this into two data frames, one normalized by tissue amount and one not.
met_per_mg <- met %>% select(sampleID, genotype, trt, leaf_avg_std, starts_with("met_per_mg")) %>%
as.data.frame() %>% column_to_rownames("sampleID")
met_amt <- met %>% select(sampleID, genotype, trt, leaf_avg_std, starts_with("met_amt")) %>%
as.data.frame() %>% column_to_rownames("sampleID")
Live vs blank dead
normalized
met_per_mg_lm_results_trt <- met_per_mg_lm %>% mutate(broomtidy.trt = map(lm_trt, broom::tidy)) %>%
unnest(broomtidy.trt) %>%
select(metabolite, term, estimate, p.value) %>%
pivot_wider(id_cols = metabolite, names_from = term, values_from = c(estimate, p.value), names_prefix = "trt_") %>%
select(-`p.value_trt_(Intercept)`)
met_per_mg_lm_results_leaf <- met_per_mg_lm %>% mutate(broomtidy.leaf = map(lm_leaf, broom::tidy)) %>%
unnest(broomtidy.leaf) %>%
select(metabolite, term, estimate, p.value) %>%
pivot_wider(id_cols = metabolite, names_from = term, values_from = c(estimate, p.value), names_prefix = "leaf_") %>%
select(-`p.value_leaf_(Intercept)`)
met_per_mg_lm_results <- inner_join(met_per_mg_lm_results_trt, met_per_mg_lm_results_leaf) %>%
mutate(tissue=str_extract(metabolite,"(leaf|root)")) %>%
group_by(tissue) %>%
mutate(across(starts_with("p.value"), .fns = p.adjust, method = "fdr", .names = "FDR_{.col}")) %>%
rename_with(~ str_replace(.x, "FDR_p.value", "FDR")) %>%
ungroup()
Joining, by = "metabolite"
met_per_mg_lm_results %>%
mutate(both=(FDR_trt_trtlive < 0.1) & (FDR_leaf_value_scale < 0.1)) %>%
group_by(tissue) %>%
summarize(across(starts_with("FDR"), ~ sum(.x < .1)), both=sum(both), count=n())
met_per_mg_lm_results %>%
mutate(both=(p.value_trt_trtlive < 0.1) & (p.value_leaf_value_scale < 0.1)) %>%
group_by(tissue) %>%
summarize(across(starts_with("p.value"), ~ sum(.x < .05)), both=sum(both), count=n())
met_per_mg_lm_results %>% filter(FDR_trt_trtlive < 0.1 & FDR_leaf_value_scale < 0.1) %>%
select(metabolite, FDR_trt_trtlive, FDR_leaf_value_scale)
met_per_mg_lm_results %>%
#filter(FDR.trt < 0.1 | FDR.leaf < 0.1) %>%
mutate(sig.both = FDR_trt_trtlive < 0.1 & FDR_leaf_value_scale < 0.1) %>%
arrange(desc(sig.both), min(.$FDR_trt_trtlive, .$FDR_leaf_value_scale)) %>%
write_csv("../output/met_per_mg_lm_full.csv")
raw
met_amt_lm <- met_amt %>%
mutate(trt=ifelse(str_detect(trt, "live"), "live", "blank_dead")) %>%
pivot_longer(cols=starts_with("met"), names_to = "metabolite") %>%
mutate(tissue=str_extract(metabolite, "leaf|root")) %>%
#scale and center
group_by(metabolite, genotype, tissue) %>%
mutate(value_scale=scale(value)) %>%
group_by(metabolite) %>%
nest() %>%
mutate(lm_trt=map(data, ~ lm(value ~ trt * genotype, data=.)),
lm_leaf=map(data, ~ lm(leaf_avg_std ~ value_scale, data=.)))
met_amt_lm_results_trt <- met_amt_lm %>% mutate(broomtidy.trt = map(lm_trt, broom::tidy)) %>%
unnest(broomtidy.trt) %>%
select(metabolite, term, estimate, p.value) %>%
pivot_wider(id_cols = metabolite, names_from = term, values_from = c(estimate, p.value), names_prefix = "trt_") %>%
select(-`p.value_trt_(Intercept)`)
met_amt_lm_results_leaf <- met_amt_lm %>% mutate(broomtidy.leaf = map(lm_leaf, broom::tidy)) %>%
unnest(broomtidy.leaf) %>%
select(metabolite, term, estimate, p.value) %>%
pivot_wider(id_cols = metabolite, names_from = term, values_from = c(estimate, p.value), names_prefix = "leaf_") %>%
select(-`p.value_leaf_(Intercept)`)
met_amt_lm_results <- inner_join(met_amt_lm_results_trt, met_amt_lm_results_leaf) %>%
mutate(tissue=str_extract(metabolite,"(leaf|root)")) %>%
group_by(tissue) %>%
mutate(across(starts_with("p.value"), .fns = p.adjust, method = "fdr", .names = "FDR_{.col}")) %>%
rename_with(~ str_replace(.x, "FDR_p.value", "FDR")) %>%
ungroup()
Joining, by = "metabolite"
met_amt_lm_results %>%
mutate(both=(FDR_trt_trtlive < 0.1) & (FDR_leaf_value_scale < 0.1)) %>%
group_by(tissue) %>%
summarize(across(starts_with("FDR"), ~ sum(.x < .1)), both=sum(both), count=n())
met_amt_lm_results %>%
mutate(both=(p.value_trt_trtlive < 0.1) & (p.value_leaf_value_scale < 0.1)) %>%
group_by(tissue) %>%
summarize(across(starts_with("p.value"), ~ sum(.x < .05)), both=sum(both), count=n())
met_amt_lm_results %>% filter(FDR_trt_trtlive < 0.1 & FDR_leaf_value_scale < 0.1) %>%
select(metabolite, FDR_trt_trtlive, FDR_leaf_value_scale)
met_amt_lm_results %>%
#filter(FDR.trt < 0.1 | FDR.leaf < 0.1) %>%
mutate(sig.both = FDR_trt_trtlive < 0.1 & FDR_leaf_value_scale < 0.1) %>%
arrange(desc(sig.both), min(.$FDR_trt_trtlive, .$FDR_leaf_value_scale)) %>%
write_csv("../output/met_amt_lm_full.csv")
Live vs dead
normalized
```r
met_per_mg_lm <- met_per_mg %>%
filter(trt != \BLANK\) %>%
mutate(trt=ifelse(str_detect(trt, \live\), \live\, \blank_dead\)) %>%
pivot_longer(cols=starts_with(\met\), names_to = \metabolite\) %>%
mutate(tissue=str_extract(metabolite, \leaf|root\)) %>%
#scale and center
group_by(metabolite, genotype, tissue) %>%
mutate(value_scale=scale(value)) %>%
group_by(metabolite) %>%
nest() %>%
mutate(lm_trt=map(data, ~ lm(value ~ trt * genotype, data=.)),
lm_leaf=map(data, ~ lm(leaf_avg_std ~ value_scale, data=.)))
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxubWV0X3Blcl9tZ19sbV9yZXN1bHRzX3RydCA8LSBtZXRfcGVyX21nX2xtICU+JSBtdXRhdGUoYnJvb210aWR5LnRydCA9IG1hcChsbV90cnQsIGJyb29tOjp0aWR5KSkgJT4lXG4gIHVubmVzdChicm9vbXRpZHkudHJ0KSAlPiVcbiAgc2VsZWN0KG1ldGFib2xpdGUsIHRlcm0sIGVzdGltYXRlLCBwLnZhbHVlKSAlPiVcbiAgcGl2b3Rfd2lkZXIoaWRfY29scyA9IG1ldGFib2xpdGUsIG5hbWVzX2Zyb20gPSB0ZXJtLCB2YWx1ZXNfZnJvbSA9IGMoZXN0aW1hdGUsIHAudmFsdWUpLCBuYW1lc19wcmVmaXggPSBcXHRydF9cXCkgJT4lXG4gIHNlbGVjdCgtYHAudmFsdWVfdHJ0XyhJbnRlcmNlcHQpYClcblxubWV0X3Blcl9tZ19sbV9yZXN1bHRzX2xlYWYgPC0gbWV0X3Blcl9tZ19sbSAlPiUgbXV0YXRlKGJyb29tdGlkeS5sZWFmID0gbWFwKGxtX2xlYWYsIGJyb29tOjp0aWR5KSkgJT4lXG4gIHVubmVzdChicm9vbXRpZHkubGVhZikgJT4lXG4gIHNlbGVjdChtZXRhYm9saXRlLCB0ZXJtLCBlc3RpbWF0ZSwgcC52YWx1ZSkgJT4lXG4gIHBpdm90X3dpZGVyKGlkX2NvbHMgPSBtZXRhYm9saXRlLCBuYW1lc19mcm9tID0gdGVybSwgdmFsdWVzX2Zyb20gPSBjKGVzdGltYXRlLCBwLnZhbHVlKSwgbmFtZXNfcHJlZml4ID0gXFxsZWFmX1xcKSAlPiVcbiAgc2VsZWN0KC1gcC52YWx1ZV9sZWFmXyhJbnRlcmNlcHQpYClcblxubWV0X3Blcl9tZ19sbV9yZXN1bHRzIDwtIGlubmVyX2pvaW4obWV0X3Blcl9tZ19sbV9yZXN1bHRzX3RydCwgbWV0X3Blcl9tZ19sbV9yZXN1bHRzX2xlYWYpICU+JVxuICBtdXRhdGUodGlzc3VlPXN0cl9leHRyYWN0KG1ldGFib2xpdGUsXFwobGVhZnxyb290KVxcKSkgJT4lXG4gIGdyb3VwX2J5KHRpc3N1ZSkgJT4lXG4gIG11dGF0ZShhY3Jvc3Moc3RhcnRzX3dpdGgoXFxwLnZhbHVlXFwpLCAuZm5zID0gcC5hZGp1c3QsIG1ldGhvZCA9IFxcZmRyXFwsIC5uYW1lcyA9IFxcRkRSX3suY29sfVxcKSkgJT4lXG4gIHJlbmFtZV93aXRoKH4gc3RyX3JlcGxhY2UoLngsIFxcRkRSX3AudmFsdWVcXCwgXFxGRFJcXCkpICU+JVxuICB1bmdyb3VwKClcbmBgYFxuYGBgIn0= -->
```r
```r
met_per_mg_lm_results_trt <- met_per_mg_lm %>% mutate(broomtidy.trt = map(lm_trt, broom::tidy)) %>%
unnest(broomtidy.trt) %>%
select(metabolite, term, estimate, p.value) %>%
pivot_wider(id_cols = metabolite, names_from = term, values_from = c(estimate, p.value), names_prefix = \trt_\) %>%
select(-`p.value_trt_(Intercept)`)
met_per_mg_lm_results_leaf <- met_per_mg_lm %>% mutate(broomtidy.leaf = map(lm_leaf, broom::tidy)) %>%
unnest(broomtidy.leaf) %>%
select(metabolite, term, estimate, p.value) %>%
pivot_wider(id_cols = metabolite, names_from = term, values_from = c(estimate, p.value), names_prefix = \leaf_\) %>%
select(-`p.value_leaf_(Intercept)`)
met_per_mg_lm_results <- inner_join(met_per_mg_lm_results_trt, met_per_mg_lm_results_leaf) %>%
mutate(tissue=str_extract(metabolite,\(leaf|root)\)) %>%
group_by(tissue) %>%
mutate(across(starts_with(\p.value\), .fns = p.adjust, method = \fdr\, .names = \FDR_{.col}\)) %>%
rename_with(~ str_replace(.x, \FDR_p.value\, \FDR\)) %>%
ungroup()
<!-- rnb-source-end -->
<!-- rnb-output-begin eyJkYXRhIjoiSm9pbmluZywgYnkgPSBcXG1ldGFib2xpdGVcXFxuIn0= -->
Joining, by =
<!-- rnb-output-end -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxubWV0X3Blcl9tZ19sbV9yZXN1bHRzICU+JSBcbiAgbXV0YXRlKGJvdGg9KEZEUl90cnRfdHJ0bGl2ZSA8IDAuMSkgJiAoRkRSX2xlYWZfdmFsdWVfc2NhbGUgPCAwLjEpKSAlPiVcbiAgZ3JvdXBfYnkodGlzc3VlKSAlPiVcbiAgc3VtbWFyaXplKGFjcm9zcyhzdGFydHNfd2l0aChcXEZEUlxcKSwgfiBzdW0oLnggPCAuMSkpLCBib3RoPXN1bShib3RoKSwgY291bnQ9bigpKVxuYGBgXG5gYGByXG5cbm1ldF9wZXJfbWdfbG1fcmVzdWx0cyAlPiUgZmlsdGVyKEZEUl90cnRfdHJ0bGl2ZSA8IDAuMSAmIEZEUl9sZWFmX3ZhbHVlX3NjYWxlIDwgMC4xKSAlPiUgXG4gIHNlbGVjdChtZXRhYm9saXRlLCBGRFJfdHJ0X3RydGxpdmUsIEZEUl9sZWFmX3ZhbHVlX3NjYWxlKVxuYGBgXG5gYGAifQ== -->
```r
```r
met_per_mg_lm_results %>%
mutate(both=(FDR_trt_trtlive < 0.1) & (FDR_leaf_value_scale < 0.1)) %>%
group_by(tissue) %>%
summarize(across(starts_with(\FDR\), ~ sum(.x < .1)), both=sum(both), count=n())
met_per_mg_lm_results %>% filter(FDR_trt_trtlive < 0.1 & FDR_leaf_value_scale < 0.1) %>%
select(metabolite, FDR_trt_trtlive, FDR_leaf_value_scale)
<!-- rnb-source-end -->
<!-- rnb-frame-begin eyJtZXRhZGF0YSI6eyJjbGFzc2VzIjpbInRibF9kZiIsInRibCIsImRhdGEuZnJhbWUiXSwibnJvdyI6MiwibmNvbCI6Nywic3VtbWFyeSI6eyJBIHRpYmJsZSI6IjIgw5cgNyJ9fSwicmRmIjoiSDRzSUFBQUFBQUFBQTIxUzNVNkRNQlF1REVaR29pNVI3M3dGQ0dwTWpOZkxIb0M0Wkhla1k5MGcxcGFVTXZYT1IvSUpoNmZRazFRaXlhSDl2bk8rdy9raFgyMGY0MjFNQ0ptUndQUEpMSVFyQ1RldjYrU1prTUFINEpHQUxNejVDVUhYY0luQWxtQytkUVNjMFFQZWxaUWF6b3ZCUHo2K2d4L0FiaDNzV1VNY1dJMnJkL0hQYUg4S0N3VjlaNjB0S3JMa1hOZHQyekdMcnRhcnZOQktHK1AxQ2VrYnBJOU1TUDNWc1B3cHk2enZiaUo1K1NkbTBKdnVpeFBsSFN2YWtuTE1IZXlrcnJEQ1VuWkNUOHBlS1BtUll1bERmOS93NnZ2K1BPMnY1TFRGL3BDTTkxVFQ5S0JBRDJncWlXU2pheWxBNUp1TnpZM0FtYmFieUZNVFl0a0pVOVUrS2F0T3ZDWDNtU1BHVlhqT1dyM3hsekRmOTN1YmE0NURZR1VsY1NOTUhHdUI0d2s1M1RGdXdTV01ZcGhFMnFnYUJtVmJCTFpOdGRRVTQrSlNjbVNHcHNuNUYxZGd0MGJCQWdBQSJ9 -->
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":["tissue"],"name":[1],"type":["chr"],"align":["left"]},{"label":["FDR_trt_trtlive"],"name":[2],"type":["int"],"align":["right"]},{"label":["FDR_trt_genotypeR500"],"name":[3],"type":["int"],"align":["right"]},{"label":["FDR_trt_trtlive:genotypeR500"],"name":[4],"type":["int"],"align":["right"]},{"label":["FDR_leaf_value_scale"],"name":[5],"type":["int"],"align":["right"]},{"label":["both"],"name":[6],"type":["int"],"align":["right"]},{"label":["count"],"name":[7],"type":["int"],"align":["right"]}],"data":[{"1":"leaf","2":"0","3":"50","4":"1","5":"4","6":"0","7":"176"},{"1":"root","2":"2","3":"21","4":"1","5":"0","6":"0","7":"176"}],"options":{"columns":{"min":{},"max":[10],"total":[7]},"rows":{"min":[10],"max":[10],"total":[2]},"pages":{}}}
</script>
</div>
<!-- rnb-frame-end -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuXG5tZXRfcGVyX21nX2xtX3Jlc3VsdHMgJT4lIFxuICAjZmlsdGVyKEZEUi50cnQgPCAwLjEgfCBGRFIubGVhZiA8IDAuMSkgJT4lXG4gIG11dGF0ZShzaWcuYm90aCA9IEZEUl90cnRfdHJ0bGl2ZSA8IDAuMSAmIEZEUl9sZWFmX3ZhbHVlX3NjYWxlIDwgMC4xKSAlPiVcbiAgYXJyYW5nZShkZXNjKHNpZy5ib3RoKSwgbWluKC4kRkRSX3RydF90cnRsaXZlLCAuJEZEUl9sZWFmX3ZhbHVlX3NjYWxlKSkgJT4lIFxuICB3cml0ZV9jc3YoXFwuLi9vdXRwdXQvbWV0X3Blcl9tZ19sbV9mdWxsX05PQkxBTksuY3N2XFwpXG5gYGBcbmBgYCJ9 -->
```r
```r
met_per_mg_lm_results %>%
#filter(FDR.trt < 0.1 | FDR.leaf < 0.1) %>%
mutate(sig.both = FDR_trt_trtlive < 0.1 & FDR_leaf_value_scale < 0.1) %>%
arrange(desc(sig.both), min(.$FDR_trt_trtlive, .$FDR_leaf_value_scale)) %>%
write_csv(\../output/met_per_mg_lm_full_NOBLANK.csv\)
<!-- rnb-source-end -->
<!-- rnb-frame-begin eyJtZXRhZGF0YSI6eyJjbGFzc2VzIjpbInRibF9kZiIsInRibCIsImRhdGEuZnJhbWUiXSwibnJvdyI6MCwibmNvbCI6Mywic3VtbWFyeSI6eyJBIHRpYmJsZSI6IjAgw5cgMyJ9fSwicmRmIjoiSDRzSUFBQUFBQUFBQTIxUTIyb0NNUkNkdlJZRHRVTDdHN3RVZk9rSGlCOGdMZmkyakRIVzBKaElkbGI5ZXR0a053RmRHaGhtNXVTY3VhMlhtd1hiTUFESUlFOVN5QW9YUXZIMXVhbytBUExVSlFua01QSCs2a2l2UFJOZ0JzT2JQdm9IUWFIeEtOcEF6Z0xJam9Kd2E1UWtFWkNYMVhMZGtDVnZTcDRqL09aaEpYRGZuRkYxb21rNUtqSHFNTEhtVXNjdXovK053QlcyY1lRSXNoMFMxbnZyZEM2N2pTUlA1a1RTYUNkSy9iS2xGL1RmZzkwWFN1d0ltSFhhVDdPcitLSFRQOVg4L1U0TVljUnhuQTM5MDk5UXF3eTFjc0VQSnNTbDBOOVN4OHNVQ3JkQ2hXVHFUdEJmb0Q1WnFTbXU2TkMySmtNWWVZd2JGWkYrYWJqOUFhUXJ6bjc4QVFBQSJ9 -->
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":["metabolite"],"name":[1],"type":["chr"],"align":["left"]},{"label":["FDR_trt_trtlive"],"name":[2],"type":["dbl"],"align":["right"]},{"label":["FDR_leaf_value_scale"],"name":[3],"type":["dbl"],"align":["right"]}],"data":[],"options":{"columns":{"min":{},"max":[10],"total":[3]},"rows":{"min":[10],"max":[10],"total":[0]},"pages":{}}}
</script>
</div>
<!-- rnb-frame-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
raw
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxubWV0X2FtdF9sbSA8LSBtZXRfYW10ICU+JVxuICBmaWx0ZXIodHJ0ICE9IFxcQkxBTktcXCkgJT4lIFxuICBwaXZvdF9sb25nZXIoY29scz1zdGFydHNfd2l0aChcXG1ldFxcKSwgbmFtZXNfdG8gPSBcXG1ldGFib2xpdGVcXCkgJT4lXG4gIG11dGF0ZSh0aXNzdWU9c3RyX2V4dHJhY3QobWV0YWJvbGl0ZSwgXFxsZWFmfHJvb3RcXCkpICU+JVxuXG4gICNzY2FsZSBhbmQgY2VudGVyXG4gIGdyb3VwX2J5KG1ldGFib2xpdGUsIGdlbm90eXBlLCB0aXNzdWUpICU+JVxuICBtdXRhdGUodmFsdWVfc2NhbGU9c2NhbGUodmFsdWUpKSAlPiVcbiAgZ3JvdXBfYnkobWV0YWJvbGl0ZSkgJT4lXG4gIG5lc3QoKSAlPiVcbiAgbXV0YXRlKGxtX3RydD1tYXAoZGF0YSwgfiBsbSh2YWx1ZSB+IHRydCAqIGdlbm90eXBlLCBkYXRhPS4pKSxcbiAgICAgICAgIGxtX2xlYWY9bWFwKGRhdGEsIH4gbG0obGVhZl9hdmdfc3RkIH4gdmFsdWVfc2NhbGUsIGRhdGE9LikpKVxuXG5gYGBcbmBgYCJ9 -->
```r
```r
met_amt_lm <- met_amt %>%
filter(trt != \BLANK\) %>%
pivot_longer(cols=starts_with(\met\), names_to = \metabolite\) %>%
mutate(tissue=str_extract(metabolite, \leaf|root\)) %>%
#scale and center
group_by(metabolite, genotype, tissue) %>%
mutate(value_scale=scale(value)) %>%
group_by(metabolite) %>%
nest() %>%
mutate(lm_trt=map(data, ~ lm(value ~ trt * genotype, data=.)),
lm_leaf=map(data, ~ lm(leaf_avg_std ~ value_scale, data=.)))
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxubWV0X2FtdF9sbV9yZXN1bHRzX3RydCA8LSBtZXRfYW10X2xtICU+JSBtdXRhdGUoYnJvb210aWR5LnRydCA9IG1hcChsbV90cnQsIGJyb29tOjp0aWR5KSkgJT4lXG4gIHVubmVzdChicm9vbXRpZHkudHJ0KSAlPiVcbiAgc2VsZWN0KG1ldGFib2xpdGUsIHRlcm0sIGVzdGltYXRlLCBwLnZhbHVlKSAlPiVcbiAgcGl2b3Rfd2lkZXIoaWRfY29scyA9IG1ldGFib2xpdGUsIG5hbWVzX2Zyb20gPSB0ZXJtLCB2YWx1ZXNfZnJvbSA9IGMoZXN0aW1hdGUsIHAudmFsdWUpLCBuYW1lc19wcmVmaXggPSBcXHRydF9cXCkgJT4lXG4gIHNlbGVjdCgtYHAudmFsdWVfdHJ0XyhJbnRlcmNlcHQpYClcblxubWV0X2FtdF9sbV9yZXN1bHRzX2xlYWYgPC0gbWV0X2FtdF9sbSAlPiUgbXV0YXRlKGJyb29tdGlkeS5sZWFmID0gbWFwKGxtX2xlYWYsIGJyb29tOjp0aWR5KSkgJT4lXG4gIHVubmVzdChicm9vbXRpZHkubGVhZikgJT4lXG4gIHNlbGVjdChtZXRhYm9saXRlLCB0ZXJtLCBlc3RpbWF0ZSwgcC52YWx1ZSkgJT4lXG4gIHBpdm90X3dpZGVyKGlkX2NvbHMgPSBtZXRhYm9saXRlLCBuYW1lc19mcm9tID0gdGVybSwgdmFsdWVzX2Zyb20gPSBjKGVzdGltYXRlLCBwLnZhbHVlKSwgbmFtZXNfcHJlZml4ID0gXFxsZWFmX1xcKSAlPiVcbiAgc2VsZWN0KC1gcC52YWx1ZV9sZWFmXyhJbnRlcmNlcHQpYClcblxubWV0X2FtdF9sbV9yZXN1bHRzIDwtIGlubmVyX2pvaW4obWV0X2FtdF9sbV9yZXN1bHRzX3RydCwgbWV0X2FtdF9sbV9yZXN1bHRzX2xlYWYpICU+JVxuICBtdXRhdGUodGlzc3VlPXN0cl9leHRyYWN0KG1ldGFib2xpdGUsXFwobGVhZnxyb290KVxcKSkgJT4lXG4gIGdyb3VwX2J5KHRpc3N1ZSkgJT4lXG4gIG11dGF0ZShhY3Jvc3Moc3RhcnRzX3dpdGgoXFxwLnZhbHVlXFwpLCAuZm5zID0gcC5hZGp1c3QsIG1ldGhvZCA9IFxcZmRyXFwsIC5uYW1lcyA9IFxcRkRSX3suY29sfVxcKSkgJT4lXG4gIHJlbmFtZV93aXRoKH4gc3RyX3JlcGxhY2UoLngsIFxcRkRSX3AudmFsdWVcXCwgXFxGRFJcXCkpICU+JVxuICB1bmdyb3VwKClcbmBgYFxuYGBgIn0= -->
```r
```r
met_amt_lm_results_trt <- met_amt_lm %>% mutate(broomtidy.trt = map(lm_trt, broom::tidy)) %>%
unnest(broomtidy.trt) %>%
select(metabolite, term, estimate, p.value) %>%
pivot_wider(id_cols = metabolite, names_from = term, values_from = c(estimate, p.value), names_prefix = \trt_\) %>%
select(-`p.value_trt_(Intercept)`)
met_amt_lm_results_leaf <- met_amt_lm %>% mutate(broomtidy.leaf = map(lm_leaf, broom::tidy)) %>%
unnest(broomtidy.leaf) %>%
select(metabolite, term, estimate, p.value) %>%
pivot_wider(id_cols = metabolite, names_from = term, values_from = c(estimate, p.value), names_prefix = \leaf_\) %>%
select(-`p.value_leaf_(Intercept)`)
met_amt_lm_results <- inner_join(met_amt_lm_results_trt, met_amt_lm_results_leaf) %>%
mutate(tissue=str_extract(metabolite,\(leaf|root)\)) %>%
group_by(tissue) %>%
mutate(across(starts_with(\p.value\), .fns = p.adjust, method = \fdr\, .names = \FDR_{.col}\)) %>%
rename_with(~ str_replace(.x, \FDR_p.value\, \FDR\)) %>%
ungroup()
<!-- rnb-source-end -->
<!-- rnb-output-begin eyJkYXRhIjoiSm9pbmluZywgYnkgPSBcXG1ldGFib2xpdGVcXFxuIn0= -->
Joining, by =
<!-- rnb-output-end -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxubWV0X2FtdF9sbV9yZXN1bHRzICU+JSBcbiAgbXV0YXRlKGJvdGg9KEZEUl90cnRfdHJ0bGl2ZSA8IDAuMSkgJiAoRkRSX2xlYWZfdmFsdWVfc2NhbGUgPCAwLjEpKSAlPiVcbiAgZ3JvdXBfYnkodGlzc3VlKSAlPiVcbiAgc3VtbWFyaXplKGFjcm9zcyhzdGFydHNfd2l0aChcXEZEUlxcKSwgfiBzdW0oLnggPCAuMSkpLCBib3RoPXN1bShib3RoKSwgY291bnQ9bigpKVxuYGBgXG5gYGByXG5cbm1ldF9hbXRfbG1fcmVzdWx0cyAlPiUgZmlsdGVyKEZEUl90cnRfdHJ0bGl2ZSA8IDAuMSAmIEZEUl9sZWFmX3ZhbHVlX3NjYWxlIDwgMC4xKSAlPiUgXG4gIHNlbGVjdChtZXRhYm9saXRlLCBGRFJfdHJ0X3RydGxpdmUsIEZEUl9sZWFmX3ZhbHVlX3NjYWxlKVxuYGBgXG5gYGAifQ== -->
```r
```r
met_amt_lm_results %>%
mutate(both=(FDR_trt_trtlive < 0.1) & (FDR_leaf_value_scale < 0.1)) %>%
group_by(tissue) %>%
summarize(across(starts_with(\FDR\), ~ sum(.x < .1)), both=sum(both), count=n())
met_amt_lm_results %>% filter(FDR_trt_trtlive < 0.1 & FDR_leaf_value_scale < 0.1) %>%
select(metabolite, FDR_trt_trtlive, FDR_leaf_value_scale)
<!-- rnb-source-end -->
<!-- rnb-frame-begin eyJtZXRhZGF0YSI6eyJjbGFzc2VzIjpbInRibF9kZiIsInRibCIsImRhdGEuZnJhbWUiXSwibnJvdyI6MiwibmNvbCI6Nywic3VtbWFyeSI6eyJBIHRpYmJsZSI6IjIgw5cgNyJ9fSwicmRmIjoiSDRzSUFBQUFBQUFBQTIxUjNVckRNQlJPK3NzSzZrRHh5aHNmb0dVcWduZ25qRDFBVWRoZHlicHNMY2FrdE9uVU94L0pKMXgzMnVaQURSWk9jNzd2bkM4NVArbHkvUkN0STBLSVN6enFFTmNIbC9odnI2djRpUkRQQVVDSlIyYjkrUVZKbCtDRVlITXd4d1E4d2RrTy9Wb3BEZWZaRUIrLzZ3bCtBYnUxNG5TQ1hjTk40MVA4TzlxZnduekpQbmhqaWdvTkdlaXlhVnB1ME1WcW1XYTYxcjJKOG9EMEZkSjdMcFgrcm5qNnVGaVkySTBsZWY0blo5RDMzV2NISmxxZU5Ua1RlTGUzVWJyQUNuUFZTbTJWUGF2Vlo0S2xELzM5d0svcnVxUGRYeTVZZy8waEdXMlpac211QmowZ1d4S3FTcGRLZ3NqcE54YjBBak5wYWwxRWE0dVl0N0t2YWh2blJTdmY0N3Y3aVJoWFFjMDYwQS9IOTUzTzNCWGdFSGhlS053SWwvdFM0bmg4d1RaY0dIQU9veGdta1ZSMUNZTXlMUUxiSkZwcGhubFJyZ1F5UTlQa2VBSVIycTQyd1FJQUFBPT0ifQ== -->
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":["tissue"],"name":[1],"type":["chr"],"align":["left"]},{"label":["FDR_trt_trtlive"],"name":[2],"type":["int"],"align":["right"]},{"label":["FDR_trt_genotypeR500"],"name":[3],"type":["int"],"align":["right"]},{"label":["FDR_trt_trtlive:genotypeR500"],"name":[4],"type":["int"],"align":["right"]},{"label":["FDR_leaf_value_scale"],"name":[5],"type":["int"],"align":["right"]},{"label":["both"],"name":[6],"type":["int"],"align":["right"]},{"label":["count"],"name":[7],"type":["int"],"align":["right"]}],"data":[{"1":"leaf","2":"0","3":"65","4":"0","5":"3","6":"0","7":"176"},{"1":"root","2":"22","3":"33","4":"1","5":"0","6":"0","7":"176"}],"options":{"columns":{"min":{},"max":[10],"total":[7]},"rows":{"min":[10],"max":[10],"total":[2]},"pages":{}}}
</script>
</div>
<!-- rnb-frame-end -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuXG5tZXRfYW10X2xtX3Jlc3VsdHMgJT4lIFxuICAjZmlsdGVyKEZEUi50cnQgPCAwLjEgfCBGRFIubGVhZiA8IDAuMSkgJT4lXG4gIG11dGF0ZShzaWcuYm90aCA9IEZEUl90cnRfdHJ0bGl2ZSA8IDAuMSAmIEZEUl9sZWFmX3ZhbHVlX3NjYWxlIDwgMC4xKSAlPiVcbiAgYXJyYW5nZShkZXNjKHNpZy5ib3RoKSwgbWluKC4kRkRSX3RydF90cnRsaXZlLCAuJEZEUl9sZWFmX3ZhbHVlX3NjYWxlKSkgJT4lIFxuICB3cml0ZV9jc3YoXFwuLi9vdXRwdXQvbWV0X2FtdF9sbV9mdWxsX05PQkxBTksuY3N2XFwpXG5gYGBcbmBgYCJ9 -->
```r
```r
met_amt_lm_results %>%
#filter(FDR.trt < 0.1 | FDR.leaf < 0.1) %>%
mutate(sig.both = FDR_trt_trtlive < 0.1 & FDR_leaf_value_scale < 0.1) %>%
arrange(desc(sig.both), min(.$FDR_trt_trtlive, .$FDR_leaf_value_scale)) %>%
write_csv(\../output/met_amt_lm_full_NOBLANK.csv\)
```